Displaying and storing mathematics electronically has been of interest to the academic and publishing industries for years. Solutions to this problem including: TeX; LaTeX; and MS Equation; allow a user to specify, through a series of commands, how to display a mathematical equation.
Calculating mathematics electronically has also been of interest to the engineering, financial and consumer markets for many years. Solutions to this problem have included handheld calculators, custom programs, and generalized calculation programs.
Handheld calculators such as those manufactured by Hewlett Packard Inc. of Palo Alto, Calif. and Texas Instruments of Dallas, Tex. allow a user to punch a series of key commands to perform a calculation. Some calculators are programmable, wherein the calculation sequences may be automated. Unfortunately, these programs will only run the specific calculator or simulators and are constrained by the small display often associated with a handheld calculator.
Custom programs, written by programmers, allow very application specific calculations and displays to be performed by a user. These programs require the combined skill of a programmer and one skilled in the calculation or algorithm being programmed.
Generalized calculation programs often include programs that make it easy for a person to customize a specific class of calculations such as financial and math calculations. An example of a program like this includes Excel by Microsoft Inc. of Redmond, Wash.
Another type of generalized calculation program is designed to perform math calculations using symbolic computational systems. This type of program allows a user to describe a mathematics equation symbolically and may generate symbolic and/or numeric results. Some examples of programs like these include: MathCAD by Mathsoft, Inc. of Cambridge, Mass.; MatLAB by The Mathworks, Inc. of Natick, Mass.; Maple by Waterloo Maple Inc. of Waterloo, Ontario, Canada; and Mathmatica by Wolfram Research, Inc. of Champlaign, Ill. None of these programs can generate live calculations that can operate on a generic browser or operate on non-numeric data types with string based or web enhanced live calculations.
With the advent of the World Wide Web, several viewers have been developed that allow non-live mathematics to be displayed. Methods for achieving live calculations have included custom programming on either the server side of the web connection or as an applet or script file on the client side. These solutions require that the web developer be a skilled programmer, putting this kind of function out of reach for many developers.
A live component authoring system can be utilized to produce live components that can not only perform calculations, but can also link web pages and embedded systems. A generalized program allows nonprogrammers to design interactive systems containing live components that may include generic computers running web browsers, embedded systems comprising dedicated hardware, network hardware, and server hardware.
The live component authoring system can be utilized to generate live components for use on target systems, wherein the target systems may include browsers and embedded systems. Preferably, this system will be capable of operating on a multitude of data types (numeric and non-numeric), be useable by non-programmer developers, and produce code that is efficient, small, and fast.
One advantage of the invention is that it generates live components for use on target systems, wherein the target systems may include browsers and embedded systems.
Another advantage of this invention is that is capable of operating on a multitude of data types including both numeric and non-numeric data types.
Yet a further advantage of this invention is that it may be useable by non-programmer application developers.
Yet another advantage of this invention is that it may scale the live components, to produce efficient code that is small and fast.
Yet another advantage of this invention is that it's live component description file may use standard file formats such as XML.
To achieve the foregoing and other advantages, in accordance with all of the invention as embodied and broadly described herein, an apparatus for generating a live component comprising a resource library, a live component editor for allowing a user to edit the live component utilizing resources from the resource library, a library of pre-built application modules, a viewer generator for creating a live component viewer from the pre-built application modules directed by the live component editor, and a component description generator for creating a live component description file directed by the live component editor. The live component editor may include a live component simulator capable of simulating the live component.
In yet a further aspect of the invention, the live component may be downloaded from a server to a local system, wherein algorithms in the live component are executed on the local system. The pre-built application modules and live component viewer may include computer executable instructions such as compiled code, assembled code, and interpreted script.
In yet a further aspect of the invention, the live component description file may includes live component viewer instructions. The live component viewer instructions may include XML, data links, mathML, mathML extensions. The live MathML extensions may comprises a bi-directional equals operator, an edit attribute indicating if a value is editable, and a display attribute indicating a name and format for a display.
A further aspect of the invention, the resource library may include rules, definitions, default values, and resources.
In yet a further aspect of the invention, a method for generating a live component comprising the steps of: opening an initial live component with a live component editor; iteratively updating the live component by; selecting an operand for modification; selecting a step from the group of steps consisting of: modifying the properties of the selected operand; and inserting an additional operation, selected from a library of pre-built application modules that operates on the operand using predetermined rules that correspond to the additional operation; saving the modified live component by: creating a live component viewer using the pre-built application modules directed by the rules based editor; and creating a live component description file directed by the rules based editor. The initial live component may be a default live component. The method may further include downloading the live component from a server to a local system, wherein algorithms in the live component are executed on the local system.
Additional objects, advantages and novel features of the invention will be set forth in part in the description which follows, and in part will become apparent to those skilled in the art upon examination of the following or may be learned by practice of the invention. The objects and advantages of the invention may be realized and attained by means of the instrumentalities and combinations particularly pointed out in the appended claims.